package ru.myrtle.umf.util;

public interface UFlags {

    enum Serializable {

        YES(true),
        NO(false);

        final boolean flag;

        Serializable(boolean flag) {
            this.flag = flag;
        }

        public boolean flag() {
            return flag;
        }
    }

    enum Virtual {

        YES(true),
        NO(false);

        final boolean flag;

        Virtual(boolean flag) {
            this.flag = flag;
        }

        public boolean flag() {
            return flag;
        }
    }

    enum Transient {

        YES(true),
        NO(false);

        final boolean flag;

        Transient(boolean flag) {
            this.flag = flag;
        }

        public boolean flag() {
            return flag;
        }
    }

    enum Volatile {

        YES(true),
        NO(false);

        final boolean flag;

        Volatile(boolean flag) {
            this.flag = flag;
        }

        public boolean flag() {
            return flag;
        }
    }

    enum Changeable {

        YES(true),
        NO(false);

        final boolean flag;

        Changeable(boolean flag) {
            this.flag = flag;
        }

        public boolean flag() {
            return flag;
        }
    }

    enum Derived {

        YES(true),
        NO(false);

        final boolean flag;

        Derived(boolean flag) {
            this.flag = flag;
        }

        public boolean flag() {
            return flag;
        }
    }

    enum Many {

        YES(true),
        NO(false);

        final boolean flag;

        Many(boolean flag) {
            this.flag = flag;
        }

        public boolean flag() {
            return flag;
        }
    }

    enum Ordered {

        YES(true),
        NO(false);

        final boolean flag;

        Ordered(boolean flag) {
            this.flag = flag;
        }

        public boolean flag() {
            return flag;
        }
    }

    enum Unique {

        YES(true),
        NO(false);

        final boolean flag;

        Unique(boolean flag) {
            this.flag = flag;
        }

        public boolean flag() {
            return flag;
        }
    }

    enum Containment {

        YES(true),
        NO(false);

        final boolean flag;

        Containment(boolean flag) {
            this.flag = flag;
        }

        public boolean flag() {
            return flag;
        }
    }

    enum Identifying {

        YES(true),
        NO(false);

        final boolean flag;

        Identifying(boolean flag) {
            this.flag = flag;
        }

        public boolean flag() {
            return flag;
        }
    }

    enum Provided {

        YES(true),
        NO(false);

        final boolean flag;

        Provided(boolean flag) {
            this.flag = flag;
        }

        public boolean flag() {
            return flag;
        }
    }

}
